package com.jiangxjsy.core.page;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Objects;

/**
 * wukong-crm-master
 * 蒋胜宇
 * 2025/6/10 13:46
 *
 * <p>
 * 分页条件类
 * 如果任意一个实体类，包括 BO，VO，Entity，用于从处理器接收参数
 * 如果该实体类是用于分页查询的，则需要继承该分页条件类
 * </p>
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageCriteria implements Serializable {
    /**
     * 当前页码
     */
    private Integer page = 1;

    /**
     * 每页显示数量
     */
    private Integer limit = 15;

    /**
     * 是否分页 0：不分页 1：分页，允许的值为 0 或 1
     */
    private Integer pageType = 1;

    public <T> BasePage<T> parse() {
        BasePage<T> page = new BasePage<>(getPage(), getLimit());
        if (Objects.equals(0, pageType)) {
            BasePage<T> ignore = page.setSize(10000);
        }
        return page;
    }

    public void setPageType(Integer pageType) {
        this.pageType = pageType;
        if (pageType == 0) {
            limit = 10000;
        }
    }

    public Integer getLimit() {
        if (limit > 100 && 1 == pageType) {
            limit = 100;
        }
        return limit;
    }
}
